﻿using Gargoyle.Roton;
using System;
using System.Collections.Generic;
using System.Text;

namespace Gargoyle.ZZT
{
    public class Language
    {
        public List<CheatDelegate> CheatFunctions = new List<CheatDelegate>();
        public List<ByteString> CheatNames = new List<ByteString>();
        public List<CommandDelegate> CommandFunctions = new List<CommandDelegate>();
        public List<ByteString> CommandNames = new List<ByteString>();
        public List<ConditionDelegate> ConditionFunctions = new List<ConditionDelegate>();
        public List<ByteString> ConditionNames = new List<ByteString>();
        public List<DirectionDelegate> DirectionFunctions = new List<DirectionDelegate>();
        public List<ByteString> DirectionNames = new List<ByteString>();
        public List<ItemDelegate> ItemFunctions = new List<ItemDelegate>();
        public List<ByteString> ItemNames = new List<ByteString>();
        public List<TargetDelegate> TargetFunctions = new List<TargetDelegate>();
        public List<ByteString> TargetNames = new List<ByteString>();

        public void AddCheat(ByteString name, CheatDelegate function)
        {
            CheatNames.Add(name);
            CheatFunctions.Add(function);
        }

        public void AddCommand(ByteString name, CommandDelegate function)
        {
            CommandNames.Add(name);
            CommandFunctions.Add(function);
        }

        public void AddCondition(ByteString name, ConditionDelegate function)
        {
            ConditionNames.Add(name);
            ConditionFunctions.Add(function);
        }

        public void AddDirection(ByteString name, DirectionDelegate function)
        {
            DirectionNames.Add(name);
            DirectionFunctions.Add(function);
        }

        public void AddItem(ByteString name, ItemDelegate function)
        {
            ItemNames.Add(name);
            ItemFunctions.Add(function);
        }

        public void AddTarget(ByteString name, TargetDelegate function)
        {
            TargetNames.Add(name);
            TargetFunctions.Add(function);
        }

    }
}
